<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>送花</title>
</head>
<body>
    <script>
        // chrome 最快的浏览器
        // 浏览器 上网代理，运行页面时，JS的宿主环境
        // 作用域
        function func(){
            let c = 3; //局部变量
        }
        // 全局变量
        // 变量名 地址的映射 属于运行环境的作用域
        // 空间大小 决定了吧？ 整数空间
        let d; //undefined  没有值 ，类型为定义 ， 空间起始地址有 但是 空间大小未定义
        var a = 1;  //var es5 之前 -> JS 变量常量声明的关键字
        let b = 2;  //    es6 2015 之后提供的 let const
        // const name = "聂筠峰";
        // let age = 19;
        // const hometown = "南昌";
        // const sex = '男';
        // 除了简单数据类型之外的的 一切都是对象
        // 对象 字面量
        /*
         * 函数名大写， 类的构造函数
         */

        // class Flower{
        //     constructor(){

        //     }
        // }
        // 类的构造函数
        function Flower(type,num){
            // 指针 
            // this 指向构造函数运行时的结果对象
            console.log(this);
            this.type = type;
            this.num = num;
        }
        // 构造对象时就指向哪个
        const ych = new Flower('油菜花',1);
        console.log(ych.type);

        const rose = new Flower('玫瑰花',1);
        console.log(rose.type,rose.num);

        const obj = {
            name : "聂筠峰",
            age : 21 ,
            hometown :'南昌',
            sex : '男'
        };
        //对象字面量 talk in js
        const nyf = {
            name : "聂筠峰",
            age : 21 ,
            hometown :'南昌',
            sex : '男',
            yz : 99,
            isSingle:true,
            gf:null,
            work_status:undefined,
            // 参数
            sendFlower(target){
                // this 属于函数
                // this 指向对象
                const flower = new Flower('红玫瑰',99);
                //console.log(this);
                
                // let xx = 1;
                // xiaomei
                // console.log(target)
                // 送花代码 ？
                // target 类型是对象，对象上有sendFLower方法 
                //target.getFlower(xiaomei);
                target.getFlower(this,flower);
            }
        };
        // 送花， 
        // 对象由两部分组成？ 属性和方法
        // 女主角
        // [] 数组 {}对象
        const xiaomei ={
            name:'小美',
            age:18,
            getFlower(sender,flower){   
                //代码的可读性  如果很长，换行  
                console.log('收到了' + sender.name + '送的'
                +flower.num+'朵'+flower.type+'并随着而来梦里梦见醒不来的梦~');           
            }
        }

        // 老乡和小美是室友
        // 代理人
        const xiaohong ={
            name : '小红',
            hometown :'南昌',
            // 接口 代理者
            getFlower(sender,flower){
            //     // console.log('峰哥，你是峰哥吗？让我们在一起吧');
            //     // target.getFlower(nyf);
            //     if(sender.name == '聂筠峰'){
            //         console.log('峰哥，你是峰哥吗？让我们在一起吧');
            //     }
            //小红拥有和小美一样的接口方法，代替小美收花
            if(sender.yz < 90){
                console.log('不收.....')
            }else{
                console.log('万达走一波');
                xiaomei.getFlower(sender,flower);
            }
            
            }
        }

        nyf.sendFlower(xiaohong);
        // nyf.sendFlower(xiaomei);
        // console.log(xx);
    </script>
</body>
</html>